Data isolation is a common problem with the software development lifecycle. Architects, developers, testers, and administrators need to tinker, enhance, and validate while using realistic data. However, they do not want to share a database with each other because incompatible or unexpected changes by coworkers may cause instability. Furthermore, a production system should not be interfered with for engineering that is unrelated to production.
Consequently, engineers copy a production database to create experimental database snapshots for various purposes. However, copying a database has other problems. For example, copying in progress can stress resources associated with an original database. Database copying entails deep copying of all data within a database. Deep copying is time consuming. Each copy consumes as much storage space as the original, which is aggravated by demand for additional copies.